ERR_MEMORY 7 Can't allocate memory for new cols/rows
ERR_FILENOTFOUND 53 Can't open data file (Archive/SaveGrid/LoadGrid)
ERR_BADDATAFILE 321 Can't read file from archive
ERR_BADVALUE 380 Can't set property to this value
ERR_SUBSCRIPT 381 Invalid subscript
ERR_CANTWHENBOUND 1000 Invalid action when bound to DB/array
ERR_DBCANTDELETEROW 1001 DB refused to delete row
ERR_DBCANTADDROW 1002 DB refused to add row
*ERR_DBCANTUPDATE 1003 DB refused to update data
*ERR_DBBADVALUE 1004 DB refused the value provided (bad type/integrity)
ERR_CANTINBROWSER 1005 Can't perform this action when hosted by browser
================================================
CORRECTED PROBLEMS 23 Nov 98
================================================
OwnerDraw no longer skips over empty cells
OLE drag drop events no longer pass bad data parameters in C++
================================================
WAIVERS 23 Nov 98
================================================
Light FloodColors are shown as white or gray.
Waiver: To use light (non-solid) flooding colors, you have to have screen colors set to more than 256 colors.
================================================
KNOWN PROBLEMS 23 Nov 98
================================================
Select followed by SendKeys causes loss of NumLock.
Cause: A Windows problem.
Circumvention: Insert DoEvents between Select and SendKeys.
Focus on a flex causes the Form_KeyDown event fire twice.
If an MDI child contains only one flex, clicking on it will not bring the child form
into foreground.
Cause: A Windows problem.
Circumvention: Place one native VB control (such as button) on the form and make sure that its TabOrder is lower than TabOrder of the flex.
Validate and AfterEdit events do not fire if form is unloaded by clicking on the control box.
Cause: This is a Windows API problem.
Circumvention: To make sure that these events are fired, if applicable, begin the Form_Unload event with the following two lines:
Me.SetFocus
DoEvents
AutosizeRowHeight with WordWrap = True may be incorrect.
Cause: This is a Windows API problem.
Circumvention: This happens if the contents of any of the rows are wider than the column, for example, a very long word in a narrow column. Make sure that the width of the column is sufficient to accommodate the widest word (depends on the font). Allow the user resizing of row heights.
After changing the DataMode, control may load wrong number of rows.
Cause: Incorrect recordset passed by the Jet Engine.
Circumvention: After changing DataMode, apply Refresh to the data control.
We have removed the Web button from the about box in order to remove the dependency on Shell32.dll
Assigning variants to "Data" properties now de-references them first
VSFlex now effectively handles the sorting of international characters
Changes to RowHeight, ColWidth properties. Because of the new features in VSFlex6 (RowHeightMax/Min/Hidden, ColWidthMax/Min/Hidden), the semantics for these properties have changed a bit. Here are the new rules:
RowHeight/ColWidth return the internal value stored by setting these properties with code. These may be different from the display values in the following cases:
a) The column (or row) is hidden, in which case the display value is zero.
b) The column is the last visible column and the ExtendLastCol property is set to True.
c) The internal value is overridden by the RowHeightMin, RowHeightMax ColWidthMin, or ColWidthMax properties.
* You may adjust for these factors if you want to, by writing code such as:
Function VisibleColWidth(i)
' hidden, easy case
If fg.ColHidden(i) Then
VisibleColWidth = 0
Exit Function
End If
' adjust for limits
Dim wid
wid = fg.ColWidth(i)
If fg.ColWidthMax > 0 And wid > fg.ColWidthMax Then
wid = fg.ColWidthMax
End If
If fg.ColWidthMin > 0 And wid < fg.ColWidthMin Then
wid = fg.ColWidthMin
End If
' adjust for ExtendLastCol
If i = fg.Cols - 1 Then
wid = fg.ClientWidth - fg.ColPos(i)
End If
' done
VisibleColWidth = wid
End Function
The RowPos and ColPos properties can also be used to determine where a row or column is. These properties return the actual display position of each column (left) and row (top). The sample routine above uses ColPos.
The ClientWidth and ClientHeight properties return the size of the control's client area (excluding border and scrollbars). These values are always smaller than or equal to the stock Width and Height properties.
CellLeft/CellTop/CellWidth/CellHeight: These properties return the actual display dimensions for the *current* cell, taking into account all the above factors plus any cell merging that may be in effect. By the way, these properties also bring the current cell into view. The control assumes you are reading these properties in order to pop up a custom cell editor that you want to display over the active cell.
Finally, you may use the Cell property with the (new) constants flexcpLeft, flexcpTop, flexcpWidth, and flexcpHeight to get the display position and dimensions for an arbitrary cell. Note that the values you obtain with each method may differ by a few twips because of rounding off errors (the dimensions are stored internally as pixels). If this occurs, the differences will be smaller than the value of Screen.TwipsPerPixelX/Y.